feat/ui studio layout#19
Draft
dustenhubbard wants to merge 7 commits into
Draft
Conversation
dustenhubbard
commented
Jun 29, 2026
Owner
- feat(theme): add Studio and Atlas named themes with chrome tokens
- feat(icons): add Studio activity- and tool-rail vector icons
- feat(ui): build the Studio layout — activity rail, panel, canvas, rails
- feat(ui): offer Studio and Atlas in the theme picker
Add the Studio (dark) and Atlas (light) named themes to the theme engine. Both build on the qdarkstyle Dark/Light base, remap it to the concept palettes, and carry a single teal accent (#37c0a6) with dark ink on the accent (white on the brighter teal fails WCAG). Add studio_tokens() as the one source of chrome tokens for the bespoke Studio-layout widgets; the canvas and the controls floating over it stay dark in both shells. The light/dark themes keep their historical azure look unchanged. Expand the theme tests to cover named-theme resolution, the teal accent and on-accent ink, the chrome-token table, and that no azure appears anywhere in the Studio/Atlas chrome.
Add stroked 24x24 SVGs for the activity rail (objects, traces, sections, 3D scene, settings), the tool rail's Flag and Host tiles, the section-nav chevrons, and the Objects-panel search field. They render through the existing tinted-icon path, so the Studio rails use vector line icons rather than the mockup's placeholder glyphs. Flag and Host now resolve to icons; update the icon tests to match and to assert the Studio icon set is present.
Add the gui/studio package implementing the Studio layout grammar: the activity rail; the first-class filterable Objects panel (model/view + a delegate that draws swatch, name, faint mono type, and a curation status dot, with a teal-bar selection and a curation legend); the dark canvas with glassy floating controls (active-object badge, scale bar, section-nav pill, and a brightness/contrast card with teal thumbs); the flush tool rail; the trace-palette strip; the mono status bar; and a title strip, all assembled by StudioShell. The widgets are a pure view layer (PySide6 plus the theme/icon utilities only), driven by data setters and signals, so they construct headlessly and can be adopted by the main window. Chrome comes from studio_tokens through a single QSS template; a theme toggle swaps the Studio (dark) and Atlas (light) shell around the always-dark canvas. Add dev/studio_preview.py to render both shells offscreen, and headless tests covering the structure and the non-negotiables (row anatomy, flush tool rail, zero azure, theme toggle, and honest 3D/Settings seams).
Add Studio (dark) and Atlas (light) to the theme radio in both the View-menu theme dialog and the options dialog, persisted through the existing "theme" setting. This makes the new token layer selectable in the running app while the bespoke Studio layout widgets are adopted into the main window separately.
Replace the title strip's placeholder conic-gradient mark with the shipped PyReconstruct app icon — the dark-glass squircle on the Studio shell, the light squircle on Atlas, mirroring how the main window chooses the OS window icon — and set it as the shell's window icon so the real window decoration carries it too. Falls back to the conic mark if the asset can't be loaded. The icon path is resolved relative to the package, so the view layer gains no new dependency.
…ark gap Swap the title strip's squircle app icon for the bare transparent fork logo (logo.png), which reads on both the dark and light title bars, and use it as the window icon too. Collapse the "Py" / "Reconstruct" wordmark into a single rich-text label so they render as one word — previously the layout's item spacing (plus a stray zero-width spacer) opened a visible gap between them. "Reconstruct" keeps the teal accent, re-tinted with the theme.
…t/ui-studio-layout # Conflicts: # PyReconstruct/modules/gui/dialog/all_options.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.